Índice

[[#Parámetros y Recopilación de Parámetros]]
[[#Rutas y grupos de rutas]]
[[#Eventos]]
[[#Fulfilment]]
[[#Transiciones]]
[[#State Handlers]]


Los agentes conversacionales en la plataforma se construyen con una estructura modular que va desde áreas temáticas amplias hasta componentes más específicos. La estructura se organiza de la siguiente manera:


Flujos (Flows)

Los flujos son las áreas temáticas principales que encapsulan las rutas de conversación. Un agente puede tener uno o varios flujos.


Páginas (Pages)

Una página representa un paso o estado en la conversación dentro de un flujo. Juntas, las páginas de un flujo manejan una conversación completa sobre un tema específico.


Componentes de la Página

Cada página puede tener tres componentes opcionales que le permiten realizar múltiples funciones.


Fulfillments

Cada uno de los componentes de la página está asociado a un fulfillment. Estos son las acciones que ejecuta el agente. Por ejemplo, un fulfillment puede hacer que el agente envíe un mensaje, haga una llamada a un webhook o establezca un parámetro.


Parámetros y Recopilación de Parámetros

Los parámetros son una forma de capturar y almacenar datos clave de las expresiones del usuario durante una conversación. A diferencia del texto sin procesar, los parámetros son datos estructurados que facilitan la lógica y las respuestas del agente. Cada parámetro tiene un nombre y un tipo de entidad.

El tipo más común son los parámetros de sesión, cuya sintaxis es $session.params.nombre_del_parametro.


Formas de Capturar Parámetros

Hay dos métodos principales para recopilar parámetros de un usuario:

  1. Mediante el emparejamiento de una intención (intent): Cuando una frase del usuario coincide con una intención que tiene entidades etiquetadas, el agente extrae los valores de esas entidades y los almacena como parámetros.

    • Ejemplo: Si la intención pagar-factura tiene una entidad de fecha, cuando el usuario dice "Quiero pagar mi factura el 3 de noviembre", el agente captura "3 de noviembre" como un parámetro.
  2. Preguntando directamente al usuario en una página: Puedes configurar una página para solicitar un parámetro específico. Cuando el usuario lo proporciona, el agente lo captura.

    • Ejemplo: En una página configurada para capturar una fecha, el agente pregunta: "¿Qué fecha desea pagar su factura?".

Configuración de la Recopilación de Parámetros

Para configurar la recopilación de un parámetro en una página, debes seguir varios pasos:


Rutas y grupos de rutas

Las rutas son un concepto central en los agentes conversacionales, ya que dirigen el flujo de la conversación. Hay dos tipos principales de rutas: las rutas de intención y las rutas de condición.


Tipos de rutas

  1. Rutas de intención: Estas rutas se activan cuando la expresión de un usuario coincide con una intención específica. Por ejemplo, si el usuario dice "pagar la factura", se le puede dirigir al flujo de facturación.

  2. Rutas de condición: Estas rutas se activan cuando se cumplen ciertas condiciones, como el valor de un parámetro de sesión. Por ejemplo, si el parámetro is_authenticated no es verdadero, la conversación puede terminar.

Un mismo camino puede tener ambos tipos de rutas. Para que este se active, tanto la intención como la condición deben cumplirse.


Configurando una ruta

Cuando configuras una ruta, puedes incluir lo siguiente:


Grupos de rutas (Route Groups)

Un grupo de rutas es una colección de rutas que se pueden reutilizar en varias páginas. Esto es útil para manejar temas que pueden surgir en diferentes puntos de la conversación.

Cómo usarlos

  1. Crear el grupo: Define el grupo de rutas y especifica si se aplica a un flujo en particular o a todos los flujos.

  2. Añadir rutas: Dentro del grupo, agrega las rutas que correspondan (por ejemplo, rutas relacionadas con el balance de la cuenta).

  3. Aplicar a las páginas: En una página, añade el grupo de rutas a través de la opción Add state handler > Route Groups.

Mejores prácticas


Eventos

Eventos en agentes conversacionales

Los eventos se activan cuando algo ocurre durante la conversación o fuera de ella. Son una forma de manejar situaciones específicas, como errores o falta de respuesta del usuario.

Tipos de eventos


Manejadores de eventos (Event handlers)

Para que un evento tenga efecto, se necesita un manejador de eventos. Estos se pueden añadir en diferentes lugares:

Mejores prácticas para no-match y no-input

Es crucial manejar los eventos de "no-match" y "no-input" para mantener la fluidez de la conversación, especialmente en llamadas de voz.

  1. Asegura la cobertura: Siempre que el usuario pueda dar una respuesta, debe haber un manejador para los eventos "no-match" y "no-input".

  2. Respuestas específicas: En lugar de respuestas genéricas como "Lo siento, no entendí", usa prompts más específicos que le digan al usuario qué información debe proporcionar, como "Lo siento, ¿cuál es el número de teléfono que está solucionando?".

  3. Diferencia por intento: Varía la respuesta según el número de veces que se activa el evento:

    • Primer intento: Un mensaje breve que simplemente repite la pregunta.

    • Segundo intento: Un mensaje más elaborado que indique que el agente aún tiene problemas para entender.

    • Tercer intento: Ofrece transferir al usuario a un agente humano, ya que el problema persiste.

Esta lógica se puede aplicar de manera similar para los eventos "no-input" en las conversaciones de voz, donde el primer prompt debe ser un simple recordatorio de la pregunta, y los siguientes deben escalarse hasta la transferencia a un agente.


Fulfilment

Los fulfillments son las acciones que tu agente realiza para interactuar con el usuario o con sistemas externos. Se pueden agregar en los fulfillments de entrada de una página, los parámetros de página y los manejadores de estado.

Puedes configurar seis tipos de acciones dentro de un fulfillment:

  1. Parámetros preestablecidos (Parameter presets): Permiten añadir o modificar el valor de los parámetros de la sesión. Es una herramienta poderosa para controlar el flujo de la conversación, como asignar el valor true a un parámetro cuando se cumple una condición.

  2. Generadores (Generators): Una función que permite llamar a un LLM (modelo de lenguaje grande) para que genere una respuesta.

  3. Respuestas del agente (Agent responses): La funcionalidad más importante, que permite al agente comunicarse con el usuario. Puedes agregar varios tipos de respuestas.

    • Texto: Para proporcionar el contenido que el agente dirá o mostrará. Puedes usar parámetros de sesión dentro del texto para personalizar la respuesta, como $session.params.nombre_usuario.

    • Otros tipos de respuesta: Incluyen audio, cargas útiles personalizadas y más.

  4. Ejecutar un webhook: Para llamar a servicios externos o APIs.

  5. Configuraciones avanzadas: Permiten ajustar el comportamiento del agente.

  6. Configuraciones de Call Companion: No se cubren en esta transcripción.

El elemento más crucial es la capacidad de proporcionar respuestas de texto. Con esta función, el agente puede hacer preguntas (¿Qué fecha saldrá para su viaje?) o dar mensajes de confirmación, usando los valores de los parámetros para que la conversación sea más natural y personal.


Transiciones

Las transiciones te permiten dirigir el flujo de la conversación, moviéndote entre diferentes páginas o flujos. Están asociadas a los manejadores de estado, como rutas y eventos.

Funcionalidades clave de las transiciones


State Handlers

Los manejadores de estado (state handlers) son la forma en que los agentes conversacionales controlan el flujo del diálogo, ya sea creando una respuesta para el usuario o haciendo una transición a otra página o flujo. Hay cuatro tipos: rutas, grupos de rutas, eventos y almacenes de datos.

El procesamiento de un manejador de estado sigue tres pasos principales:

  1. Ámbito (scope): El manejador debe estar en el ámbito correcto para poder ser considerado.

  2. Orden: Los manejadores que están en el ámbito se evalúan en un orden específico para ver si sus requisitos se cumplen.

  3. Llamada: Si los requisitos se cumplen, el manejador se "llama" y se ejecutan sus acciones y transiciones asociadas.


Ámbito de los manejadores

El ámbito de un manejador determina si puede ser procesado en un momento dado.


Orden de evaluación

El orden en que los manejadores se evalúan es crucial y depende de la situación.

Transición a un flujo

Al hacer una transición a un flujo, siempre vas a la página de inicio (Start Page), a menos que estés regresando de un flujo que finalizó.

Transición a una página

El orden de evaluación en una página es:

  1. Fulfillment de entrada: Primero se ejecuta el fulfillment de entrada de la página.

  2. Rutas de condición: Se evalúan las rutas de condición en la página en el orden en que están listadas. Las rutas de intención se ignoran en este punto, excepto si acabas de hacer una transición de un flujo a la página de inicio.

  3. Grupos de rutas: Se evalúan los grupos de rutas adjuntos a la página.

  4. Parámetros requeridos: Si hay parámetros obligatorios sin valor, se pasa al prompt inicial del primer parámetro.

Si una ruta te lleva a una nueva página, el proceso de la página actual se detiene.

Inicio de un turno

Este es el caso más complejo, ya que el orden depende de dos factores: si se está recopilando un parámetro obligatorio y si hubo un evento de "no-match" o "no-input" en el turno anterior.